package com.weasing.res.dao.base;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.weasing.res.utils.PageBean;

/**
 * 基础dao
 * 
 * @author 黄龙
 *
 * @param <T>
 */
public interface IBaseDao<T> {
    public void save(T entity);
    public void saveOrUpdate(T entity);
	public void delete(T entity);
	public void update(T entity);
	public T findById(Serializable id);
	public List<T> findAll();
	public void ececuteUpdate(String queryName,Object...objects );
	public void pageQuery(PageBean pageBean);
	/**
	 * 获得表数据的count
	 */
	public Integer findCount();

	/**
	 * 通过父id查询所有子id对象
	 * 
	 * @param parentId
	 * @return
	 */
	public List<T> findAllByParentId(Integer parentId);

	/**
	 * 查所有 适合有外键关联的对象 避免重复查
	 * 
	 * @author 黄龙
	 * @param parentId
	 * @return
	 */
	public List<T> findAllByCriteria();

	/**
	 * 模糊查询 map里面 第一个是字段名 第二个是字段值
	 * 
	 * @author 黄龙
	 * @param pageBean
	 * @param map
	 */
	public void pageQuery(PageBean pageBean, Map<String, Object> map);

	/**
	 * 通过map找到对应表的个数
	 * 
	 * 
	 */
	
	public Integer findCountByField(Map<String, Object> map);

	/**
	 * 根据字段找到对应的对象
	 * 
	 * @author 黄龙
	 * @param pageBean
	 * @param map
	 */
	public List<T> findByField(Map<String, Object> map);
}
